#include "processor.h"

#include "lane.h"		// EXECUTION LANES

#include "issue_queue.h"	// ISSUE QUEUE

//////////////////////////////////////////////////////////////////////////////


class trace_processor{
private:
	unsigned int issue_width;	// issue width (number of processor execution lanes)

	issue_queue IQ_INT;
	issue_queue IQ_FP;

	lane *Execution_Lanes;
	mem_interface *LSU;

	unsigned long long *localRegisters;

	void alu(unsigned int index);
	void resolve(unsigned int branch_ID, bool correct);

	bool completed;
	bool exception;


public:
	trace_processor(unsigned int iq_size, unsigned int dispatch_width);
	void schedule();
	void register_read(unsigned int lane_number);
	void register_write()
	unsigned long long read(unsigned int local_reg);
	void write(unsigned int local_reg, unsigned long long value);
	void execute(unsigned int lane_number);
	void writeback(unsigned int lane_number);

}trace_processor_t;
